package com.itheima.d3_static.demo01;

//目标：掌握静态成员变量的使用
public class Demo {
    public static void main(String[] args) {
        /**
         * static：可以修饰成员变量和成员方法
         *      被static修饰的变量叫类变量（静态变量）
         *      没有被static修饰的变量叫实例变量
         *
         * 类变量特点：类变量被该类的所有对象共享，通过"类名.变量名"访问
         * 实例变量特点：实例变量属于对象，每个对象都有一份，相互独立互不干扰。通过"对象名.变量名"访问
         */

        //需求：要求优化Student类的属性，其中学校属性应该被所有Student对象共享
        //1.未优化前，schoolName属于实例变量，每个对象独有，互不影响，而且实例变量只能被对象调用
        Student stu1 = new Student();
        stu1.schoolName = "黑马程序员武汉中心";
        stu1.name = "张三";

        Student stu2 = new Student();
        stu2.schoolName = "清华大学";
        stu2.name = "李四";

        System.out.println("stu1的schoolName：" + stu1.schoolName);
        System.out.println("stu1的name：" + stu1.name);

        System.out.println("stu2的schoolName：" + stu2.schoolName);
        System.out.println("stu2的name：" + stu2.name);

        //2.要求：让schoolName属性被所有对象共享！把这个属性变成类变量，类变量属于类，被所有对象共享

        //3.注意：被static修饰的成员变量，推荐使用类名调用
        System.out.println("学校名：" + Student.schoolName);

        //4.注意：虽然类变量可以用对象调用，实际上不推荐！而且底层还是会变成类名调用
    }
}


